package com.jarrah.photo; import android.app.Dialog; import android.content.Context; import android.util.DisplayMetrics; import android.util.Log; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.WindowManager.LayoutParams; /** * 需要在style里面添加这些xml <style name="XDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowAnimationStyle">@style/DialogAnimation</item> <item name="android:background">@android:color/transparent</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:windowFullscreen">true</item> </style> <style name="DialogAnimation" parent="@android:style/Animation.Dialog"> <item name="android:windowEnterAnimation">@anim/push_up_in</item> <item name="android:windowExitAnimation">@anim/push_down_out</item> </style> */ //需要添加这些动画 //push_down_out //<?xml version="1.0" encoding="utf-8"?> //<set xmlns:android="http://schemas.android.com/apk/res/android" > // // <translate // android:duration="300" // android:fromYDelta="0.0" // android:toYDelta="100.0%p" /> // //</set> //push_up_in //<?xml version="1.0" encoding="utf-8"?> //<set xmlns:android="http://schemas.android.com/apk/res/android" > // // <translate // android:duration="300" // android:fromYDelta="100.0%p" // android:toYDelta="0.0" /> // //</set> public class PopupUtil { public static final int WIDTH = 0; public static final int HEIGHT = 1; public static boolean showDialog(Dialog dialog) { if (dialog == null) { log("dialog is null"); return false; } if (dialog.isShowing()) { log("dialog is showing"); return false; } dialog.show(); return true; } /** * create a popup menu * @param context * @param contentView * @return */ public static Dialog makePopup(Context context, View contentView) { Dialog dialog = new Dialog(context, R.style.popupDialog); Window window = dialog.getWindow(); WindowManager.LayoutParams windowParams = new WindowManager.LayoutParams(); int[] size = getScreenSize(context); windowParams.x = 0; windowParams.y = size[HEIGHT]; //设置window的布局参数 window.setAttributes(windowParams); // window.setBackgroundDrawableResource(R.drawable.alert_dialog_background); dialog.setCanceledOnTouchOutside(true); dialog.setContentView(contentView); // 显示的大小是contentView 的大小 dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); return dialog; } /** * get device size * @param context * @return */ public static int[] getScreenSize(Context context) { int[] deviceSize = new int[2]; int w = 0; int h = 0; DisplayMetrics dm = new DisplayMetrics(); WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); wm.getDefaultDisplay().getMetrics(dm); w = dm.widthPixels; h = dm.heightPixels; deviceSize[WIDTH] = w; deviceSize[HEIGHT] = h; return deviceSize; } public static void log(String msg) { Log.e("dialog", msg); } }